查看原文
其他

医学影像分析常用 R 包

The following article is from 医学和生信笔记 Author 阿越就是我

点击下方公众号,回复资料分享,收获惊喜


本文翻译自CRAN Task View: Medical Image Analysis,限于个人水平,难免有错误,欢迎大家阅读原文。

医学影像是由磁共振成像(MRI),计算机断层扫描(CT)和正电子发射断层扫描(PET)等系统产生的。它们通常是三维的,有时还具有随时间或方向而变化的维度。除此之外还包含其他很多信息。这些信息和影像通常是通过几种专用格式存储的。

此任务视图中的R包旨在读取和写出这些文件、可视化医学影像并以各种方式处理它们。其中一些R包也适用于常规图像处理,一些通用图像处理R包也可以用于处理医学影像数据。图像强度,存储像素或体素(3D像素),通常可以映射到R中的数组(array)中,array是R中的标准数据结构,因此适合与R基础语法和其他代码一起使用。


本文目录:

  • 数据输入/输出

    • DICOM

    • ANALYZE和NIfTI

    • 其他格式

  • 可视化

  • Magnetic Resonance Imaging (MRI)

    • Diffusion MRI

    • Functional MRI

    • Structural MRI

    • Simulation

  • Magnetic Resonance Spectroscopy (MRS)

  • 一般图像处理

  • Positron Emission Tomography (PET)

  • Electroencephalography (EEG)

  • 涉及的R包

  • 相关链接

  • 其他资源


数据输入/输出

DICOM

用于临床成像设备输出的数据的行业标准格式是DICOM(Digital Imaging and Communications in Medicine)。DICOM“标准”非常广泛且非常复杂。粗略地说,每个DICOM兼容的文件都是一系列字段的集合,这些字段组织成两个四字节的序列(组,元素),表示为十六进制数,并形成一个标签。(组,元素)的组合通知下一个信息的类型。DICOM头的字节数没有固定的值。最后的(组,元素)标签应该是“数据”标签(7FE0,0010),这样随后的所有信息都与图像相关。实际上,真实的DICOM文件存在许多特定于供应商的怪癖,这使得一致处理成为一个重大挑战。以下是一些常见的可以读取/输出DICOM文件的R包:

  • oro.dicomdivesttractor.aase包可实现读取通用DICOM文件并将其转换为ANALYZENIFTI格式。

  • fmridti包提供了更多专门的功能,重点是读取特定类型的格式(可参见下文)。

  • DICOMread包含一个简单的包装器,该包是基于MATLAB的一些DICOM处理程序实现的。

ANALYZE和NIfTI

尽管医学影像数据的行业标准是DICOM,但在影像分析社区中已经大量使用了另一种格式。ANALYZE格式最初是和梅奥基金会(Mayo Foundation)的图像处理系统(同名)结合开发的。ANALYZE(7.5)格式图像由两个文件组成,即hdrimg文件,分别包含有关图像采集和图像数据本身的信息。这种格式的改进版被称为NIfTI-1,是Neuroimaging Informatics Technology Initiative(NIfTI)的数据格式工作组(Data Format Working Group, DFWG)的产物。NIfTI-1数据格式与ANALYZE格式基本相同,但提供了一些改进:将header和图像信息合并到一个文件(.nii)中,将348个字节固定的header重新组织为更相关的类别。

  • RNiftifmritractor.baseoro.niftineuroimnifti.io都提供了读取/写出ANALYZENIfTI文件的函数。它们使用各种内部数据结构,但是都可以把像素或体素数据转换为R中的array

  • 下面概述的其他几个软件包使用其中之一来执行其文件I/O。

其他格式

还有许多其他格式需要使用特定的R包。

  • gifti包读取GIFTI格式的文件, cifti软件包读取CIFTI格式文件。这两种格式都与上述NIFTI图像格式有关。

  • tractor.base可以读取FreeSurfer的MGH/MGZ图像格式,freeSurforformats可以读取这种格式以及其他几种文件格式。

可视化

  • brainR可使用WebGL,RGL和JavaScript命令创建三维(3D)和四维(4D)图像。该包依赖于X工具包(XTK)。

  • Morpho是用于形状统计分析和可视化的工具集合。除了核心的General Procrustes Analysissliding of semi-landmarks功能外,Morpho还采用各种统计程序来评估群体差异和不对称性,其中大多数基于置换/自举方法。为了进行配准,它提供了计算标志点变换(刚体、相似、仿射和薄板样条)的函数,以及迭代最近点配准和利用形状的主轴进行自动对齐的函数。为了处理缺失/错误数据,它提供了用于处理缺失标志点和交互式异常值检测的插补方法。为了可视化,它提供了创建交互式3D距离图和通过变形矩形格点来可视化点云之间差异(包括2D和3D)的函数。此外,它还包括一种算法,用于反变形表面网格,表示经历一系列局部仿射变形(例如化石)的结构。

  • Rvcg是一个与VCGLIB接口对接的库,提供了用于操作三角面片网格的功能,例如从医学图像分割生成的表面。这些操作包括二次边缘折叠简化、平滑、子采样、最近点搜索或均匀重网格化。此外,它还允许从3D数组生成等值面。它具有STL、PLY和OBJ文件的导入/导出功能,支持二进制和ASCII格式。

Magnetic Resonance Imaging (MRI)

Diffusion MRI

  • tractor.base是一个支持扩散MRI特定元数据的软件包,包括扩散敏感梯度方向和b值。它是TractoR项目的一部分,该项目提供了基于R的工具,用于扩散张量估计、纤维追踪和结构连接组估计,所有这些工具都基于扩散MRI技术。

  • dti包提供了扩散张量成像(DTI)、扩散峰度成像(DKI)以及使用Q-ball重建和张量混合模型进行高角分辨率扩散加权成像(HARDI)的建模功能,还包括多种结构自适应平滑方法和纤维追踪功能。

  • dmri.tracking包也实现了一种纤维追踪算法。

Functional MRI

  • adaptsmoFMRI包含了一些R函数,用于基于自适应高斯马尔科夫随机场对功能磁共振成像(fMRI)数据进行血氧水平相关(BOLD)效应的估计,适用于真实数据和模拟数据。通过高效的马尔科夫链蒙特卡洛模拟来进行基本模型的推断,对于非近似情况使用Metropolis Hastings算法,对于近似情况使用Gibbs采样器。当比较近似与非近似版本的结果时,前者更具优势,因为在不进行近似时,估计的准确性的提高很小,计算负担也不那么繁重。
  • R包fmri提供了用于功能磁共振成像(fMRI)数据分析的工具。其核心是一种新型自适应平滑方法的实现。与传统的非自适应平滑方法不同,这些方法可以显著增强信号,并减少错误的阳性检测,而不会降低有效空间分辨率。这一特性在高分辨率功能磁共振成像的分析中尤为重要。该软件包包括一些标准成像格式(ANALYZE、NIfTI、AFNI、DICOM)的输入/输出函数,以及使用随机场理论进行数据线性建模和信号检测的函数。它还包括基于ICA和NGCA(非高斯成分分析)的方法。
  • Neuroimage是一个R包(目前只在R-Forge的neuroim项目中可用),提供用于功能性脑成像数据的数据结构和输入/输出例程。它可以读取和写入NIfTI-1数据,并提供用于处理多维图像的S4类。

Structural MRI

  • mritc包提供了使用正态混合模型和(偏体积、更高分辨率)被各种方法拟合的隐马尔可夫正态混合模型进行MRI组织分类的工具。可以使用函数获得初始值和空间参数。提供了用于可视化和评估分类结果的功能。为了提高速度,在各个地方使用了查表方法,使用了向量化来利用条件独立性,并通过嵌入式C代码执行一些计算。
  • qMRI包支持从多参数映射(MPM)MRI采集中估计定量弛豫度图像,包括自适应平滑。

Simulation

  • neuRosim包允许用户生成fMRI时间序列或4D数据。它创建了一些高级函数,只需提供少量参数即可快速生成数据,并提供了多种函数来定义激活和噪声。对于更高级的用户,可以使用低级函数和操作参数。

Magnetic Resonance Spectroscopy (MRS)

MRS(磁共振波谱)使用与MRI相同的基本扫描技术,但专注于使用它来获取化学谱图。这用于测量各种化合物的浓度,包括在医学背景下具有重要生化作用的代谢物。

  • spant包包含用于读取、可视化和处理MRS数据的工具,包括谱线拟合和谱线对齐方法。

一般图像处理

  • adimpro是用于2D数字(颜色和B/W)图像的R包,实际上不是针对医学影像的,而是用于一般图像处理。
  • bayesImageS软件包实现了几种用于分割2D和3D图像(如CT和MRI)的算法。它提供了隐Markov正态混合模型的全Bayesian推断,包括平滑参数的后验分布。像素标签可以使用棋盘格Gibbs或Swendsen-Wang采样。平滑参数的MCMC算法包括近似交换算法(AEA)、伪似然(PL)、热力学积分(TI)和近似贝叶斯计算(ABC-MCMC和ABC-SMC)。当存在解剖图谱或其他空间信息时,可以使用外部场先验。
  • EBImage是一个R包,提供了用于读取、写入、处理和分析图像的通用功能。此外,在基于显微镜的细胞测定的背景下,该软件包还提供了转换图像、分割细胞和提取定量细胞描述符的工具。
  • imbibe包提供一组快速、可链式应用于二维、三维或四维图像的图像处理操作,尤其适用于医学图像。
  • mmand(Mathematical Morphology in Any Number of Dimensions)包提供了腐蚀和膨胀、开运算和闭运算以及平滑和基于核的图像处理等形态学操作。它适用于任意维度的数组或类似数组的数据。
  • RNiftyReg提供了与NiftyReg图像配准工具的接口。支持刚体、仿射和非线性配准,并可在2D到2D、3D到2D和4D到3D的过程中应用。
  • fslr包包含了与 FMRIB Sofware Library(FSL)接口的包装函数,使用系统命令与这个功能强大且广泛使用的神经影像软件库进行交互。该软件包的目标是在R中完全与FSL进行接口,您可以传递基于R的NIfTI对象,函数将执行一个FSL命令并返回基于R的NIfTI对象。

Positron Emission Tomography (PET)

  • occ软件包提供了一个通用函数,用于根据一组感兴趣区域(ROI)的总体积分布,估计PET神经受体的药物占位比。拟合方法包括参考区域法、普通最小二乘法(OLS,有时也称为“占位图”)和受限最大似然估计(REML)。
  • oro.pet包包含了几种PET实验的参数估计例程,包括:标准摄取值(SUV)、占位比、简化的参考组织模型(SRTM)、多线性参考组织模型(MRTM)和半最大抑制浓度(IC50)。

Electroencephalography (EEG)

  • edfReader读取EEG记录中一些最受欢迎的文件格式。
  • EEG包(目前只能在R-Forge上的eeg项目中获得)可以读取单个试验的EEG数据(目前只支持从Brain Vision Analyzer导出的ascii格式的预处理和试验分段数据),计算平均值(即事件相关电位或ERP),并将多个数据集的ERP存储在类似数据框的对象中,以便可以使用熟悉的R建模框架进行统计分析(线性模型,(M)ANOVA)。
  • eegkit包含了许多用于分析EEG信号的有用函数(包括可视化电极的位置等)。
  • PTAk是一个R包,使用多维方法对任意阶的张量(数组)进行分解,作为广义的奇异值分解(SVD)的推广,同时支持非恒等度量和惩罚机制。该包还提供了具有这些扩展的二维SVD方法。该包还包括其他多维方法:PCAn(Tucker-n)和带有这些扩展的PARAFAC/CANDECOMP。应用包括对EEG和功能性磁共振成像(fMRI)数据的分析。
  • raveio包支持“R analysis and visualization of human intracranial electroencephalography data”(RAVE)项目,用于分析深度或表面记录的EEG数据。

涉及的R包

核心R包:adimpro, divest, dti, edfReader, eegkit, fmri, mmand, Morpho, mritc, neuroim, neuRosim, occ, oro.dicom, oro.nifti, oro.pet, RNifti, RNiftyReg, Rvcg, tractor.base

常规R包:adaptsmoFMRI, bayesImageS, brainR, cifti, DICOMread, dmri.tracking, freesurferformats, fslr, gifti, imbibe, nifti.io, PTAk, qMRI, raveio, spant

相关链接

  • Journal of Statistical Software special volume on Magnetic Resonance Imaging in R.
  • Neuroconductor是一个类似于Bioconductor的平台,用于在R中快速测试和传播可重复计算成像软件。
  • ANTsR是一个框架,将ITK和基于ANTs的图像处理方法集成到R编程语言中。
  • SimpleITK是建立在ITK之上的简化层,旨在方便其在快速原型设计、教育和解释性语言中的使用。SimpleITK支持2D和3D图像以及一组选定的像素类型。不同的图像滤波器可以支持不同的像素类型,这在许多情况下是由于计算需求不同。该库通过使用SWIG来为解释性语言进行封装。特别地,以下封装可用:Python、Java、Tcl、Lua、R和Ruby。

其他资源

  • Bioconductor包:EBImage
  • R-Forge Project: eeg
  • R-Forge Project: neuroim

相关推荐

colourpicker包:图形颜色拾取器


visdat包:助你一眼看穿数据结构和缺失值!


report包:助你自动出统计报告!


reticulate包|数据科学者的福音


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存